package com.link2room.rodimus.dto.result.base;

import com.link2room.common.annotation.L2RDatetimeString;
import com.link2room.common.annotation.L2RDes;
import com.link2room.common.dto.result.base.BaseDto;
import com.link2room.rodimus.constant.RodimusDescriptPrefixKeyConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.Date;

/**
 * Created by sss on 2017/7/12.
 */
@ApiModel
public class InvoiceDetailDto extends BaseDto {
    /**
     * 发票号
     */
    @ApiModelProperty(value = "发票号")
    private String invoiceNo;
    /**
     * 外部订单号
     */
    @ApiModelProperty(value = "外部订单号")
    private String terminalNo;
    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    private String orderNo;
    /**
     * 订单类型
     */
    @ApiModelProperty(value = "订单类型")
    private String orderType;
    /**
     * 订单名称
     */
    @ApiModelProperty(value = "订单名称")
    private String orderName;
    /**
     * 订单渠道
     */
    @ApiModelProperty(value = "订单渠道")
    private String pbChannel;
    /**
     * 会员号
     */
    @ApiModelProperty(value = "会员号")
    private String memberNo;
    /**
     * 发票类型（1:普通发票；2：增值税专用发票）
     */
    @ApiModelProperty(value = "发票类型",allowableValues = "1:普通发票；2：增值税专用发票")
    private Integer invoiceType;
    /**
     * 发票类型（1:普通发票；2：增值税专用发票）
     */
    @L2RDes(value = RodimusDescriptPrefixKeyConstant.INVOICE_TYPE,source = "invoiceType")
    private String invoiceTypeDes;
    /**
     * 发票抬头类型（1:个人；2:公司）
     */
    @ApiModelProperty(value = "发票抬头类型",allowableValues = "1:个人；2:公司")
    private Integer invoiceTitleType;
    /**
     * 发票抬头类型（1:个人；2:公司）
     */
    @L2RDes(value = RodimusDescriptPrefixKeyConstant.INVOICE_TITLE_TYPE,source = "invoiceTitleType")
    private String invoiceTitleTypeDes;
    /**
     * 发票抬头
     */
    @ApiModelProperty(value = "发票抬头")
    private String invoiceTitle;
    /**
     * 发票状态：0：新建;1：请求已经被读取过;2：请求已经被认领;3：请求已经反馈;4：处理完成;5：请求失效
     */
    @ApiModelProperty(value = "发票状态",allowableValues = "0：新建;1：请求已经被读取过;2：请求已经被认领;3：请求已经反馈;4：处理完成;5：请求失效")
    private Integer status;
    /**
     * 发票状态描述：0：新建;1：请求已经被读取过;2：请求已经被认领;3：请求已经反馈;4：处理完成;5：请求失效
     */
    @L2RDes(value = RodimusDescriptPrefixKeyConstant.INVOICE_STATUS,source = "status")
    private String statusDes;
    /**
     * 纳税人识别号
     */
    @ApiModelProperty(value = "纳税人识别号")
    private String taxpayerId;
    /**
     * 发票领取方式:0：前台自取;1：邮寄;2：电子发票;3: 送票到房
     */
    @ApiModelProperty(value = "发票领取方式",allowableValues = "0：前台自取;1：邮寄;2：电子发票;3: 送票到房")
    private Integer postType;
    /**
     * 发票领取方式:0：前台自取;1：邮寄;2：电子发票;3: 送票到房
     */
    @L2RDes(value = RodimusDescriptPrefixKeyConstant.POST_TYPE,source = "postType")
    private String postTypeDes;
    /**
     * 发票是否需要提前准备0：不提前开发票1: 需要提前开好发票
     */
    private Integer earlyPrepare;
    /**
     * 发票是否需要提前准备0：不提前开发票1: 需要提前开好发票
     */
    @L2RDes(value = RodimusDescriptPrefixKeyConstant.EARLY_PREPARE,source = "earlyPrepare")
    private String earlyPrepareDes;
    /**
     * 公司注册地址
     */
    @ApiModelProperty(value = "公司注册地址")
    private String regAddress;
    /**
     * 收件人姓名
     */
    @ApiModelProperty(value = "收件人姓名")
    private String receiverName;
    /**
     * 收件人手机号
     */
    @ApiModelProperty(value = "收件人手机号")
    private String receiverMobile;
    /**
     * 收件地址
     */
    @ApiModelProperty(value = "收件地址")
    private String receiverAddress;
    /**
     * 发票提供方（发票由谁来提供）1：酒店前台2: 商家提供3：去啊平台提供
     */
    @ApiModelProperty(value = "发票提供方（发票由谁来提供）",allowableValues = "1：酒店前台2: 商家提供3：去啊平台提供")
    private Integer provider;
    /**
     * 发票提供方（发票由谁来提供）1：酒店前台2: 商家提供3：去啊平台提供
     */
    @L2RDes(value = RodimusDescriptPrefixKeyConstant.PROVIDER,source = "provider")
    private String providerDes;
    /**
     * 邮费承担方1：酒店承担2：商家承担3：去啊平台承担4：客户自己承担
     */
    @ApiModelProperty(value = "邮费承担方",allowableValues = "1：酒店承担2：商家承担3：去啊平台承担4：客户自己承担")
    private Integer payer;
    /**
     * 邮费承担方1：酒店承担2：商家承担3：去啊平台承担4：客户自己承担
     */
    @L2RDes(value = RodimusDescriptPrefixKeyConstant.PAYER,source = "payer")
    private String payerDes;
    /**
     * 用户期望取票时间
     */
    @ApiModelProperty(value = "用户期望取票时间")
    private Date wantTime;

    @L2RDatetimeString(source = "wantTime")
    private String wantTimeStr;
    /**
     * 公司电话
     */
    @ApiModelProperty(value = "公司电话")
    private String companyTel;
    /**
     * 开户行
     */
    @ApiModelProperty(value = "开户行")
    private String bankName;
    /**
     * 银行账户：抬头公司银行账号
     */
    @ApiModelProperty(value = "银行账户：抬头公司银行账号")
    private String bankAccount;
    /**
     * 备注说明
     */
    @ApiModelProperty(value = "备注说明")
    private String comment;
    /**
     * 建议PMS提示文案
     */
    @ApiModelProperty(value = "建议PMS提示文案")
    private String displayText;
    /**
     * 扩展字符串json格式
     */
    @ApiModelProperty(value = "扩展字符串json格式")
    private String extensions;
    /**
     * 是否寄出
     */
    @ApiModelProperty(value = "发货单号,是否寄出")
    private String expressNo;

    public String getTerminalNo() {
        return terminalNo;
    }

    public void setTerminalNo(String terminalNo) {
        this.terminalNo = terminalNo;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getOrderType() {
        return orderType;
    }

    public void setOrderType(String orderType) {
        this.orderType = orderType;
    }

    public String getPbChannel() {
        return pbChannel;
    }

    public void setPbChannel(String pbChannel) {
        this.pbChannel = pbChannel;
    }

    public String getMemberNo() {
        return memberNo;
    }

    public void setMemberNo(String memberNo) {
        this.memberNo = memberNo;
    }

    public Integer getInvoiceType() {
        return invoiceType;
    }

    public void setInvoiceType(Integer invoiceType) {
        this.invoiceType = invoiceType;
    }

    public Integer getInvoiceTitleType() {
        return invoiceTitleType;
    }

    public void setInvoiceTitleType(Integer invoiceTitleType) {
        this.invoiceTitleType = invoiceTitleType;
    }

    public String getInvoiceTitle() {
        return invoiceTitle;
    }

    public void setInvoiceTitle(String invoiceTitle) {
        this.invoiceTitle = invoiceTitle;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getTaxpayerId() {
        return taxpayerId;
    }

    public void setTaxpayerId(String taxpayerId) {
        this.taxpayerId = taxpayerId;
    }

    public Integer getPostType() {
        return postType;
    }

    public void setPostType(Integer postType) {
        this.postType = postType;
    }

    public Integer getEarlyPrepare() {
        return earlyPrepare;
    }

    public void setEarlyPrepare(Integer earlyPrepare) {
        this.earlyPrepare = earlyPrepare;
    }

    public String getRegAddress() {
        return regAddress;
    }

    public void setRegAddress(String regAddress) {
        this.regAddress = regAddress;
    }

    public String getReceiverName() {
        return receiverName;
    }

    public void setReceiverName(String receiverName) {
        this.receiverName = receiverName;
    }

    public String getReceiverMobile() {
        return receiverMobile;
    }

    public void setReceiverMobile(String receiverMobile) {
        this.receiverMobile = receiverMobile;
    }

    public String getReceiverAddress() {
        return receiverAddress;
    }

    public void setReceiverAddress(String receiverAddress) {
        this.receiverAddress = receiverAddress;
    }

    public Integer getProvider() {
        return provider;
    }

    public void setProvider(Integer provider) {
        this.provider = provider;
    }

    public Integer getPayer() {
        return payer;
    }

    public void setPayer(Integer payer) {
        this.payer = payer;
    }

    public Date getWantTime() {
        return wantTime;
    }

    public void setWantTime(Date wantTime) {
        this.wantTime = wantTime;
    }

    public String getCompanyTel() {
        return companyTel;
    }

    public void setCompanyTel(String companyTel) {
        this.companyTel = companyTel;
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    public String getBankAccount() {
        return bankAccount;
    }

    public void setBankAccount(String bankAccount) {
        this.bankAccount = bankAccount;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public String getDisplayText() {
        return displayText;
    }

    public void setDisplayText(String displayText) {
        this.displayText = displayText;
    }

    public String getExtensions() {
        return extensions;
    }

    public void setExtensions(String extensions) {
        this.extensions = extensions;
    }

    public String getExpressNo() {
        return expressNo;
    }

    public void setExpressNo(String expressNo) {
        this.expressNo = expressNo;
    }

    public String getOrderName() {
        return orderName;
    }

    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }

    public String getInvoiceNo() {
        return invoiceNo;
    }

    public void setInvoiceNo(String invoiceNo) {
        this.invoiceNo = invoiceNo;
    }

    public String getStatusDes() {
        return statusDes;
    }

    public void setStatusDes(String statusDes) {
        this.statusDes = statusDes;
    }

    public String getInvoiceTypeDes() {
        return invoiceTypeDes;
    }

    public void setInvoiceTypeDes(String invoiceTypeDes) {
        this.invoiceTypeDes = invoiceTypeDes;
    }

    public String getInvoiceTitleTypeDes() {
        return invoiceTitleTypeDes;
    }

    public void setInvoiceTitleTypeDes(String invoiceTitleTypeDes) {
        this.invoiceTitleTypeDes = invoiceTitleTypeDes;
    }

    public String getPostTypeDes() {
        return postTypeDes;
    }

    public void setPostTypeDes(String postTypeDes) {
        this.postTypeDes = postTypeDes;
    }

    public String getEarlyPrepareDes() {
        return earlyPrepareDes;
    }

    public void setEarlyPrepareDes(String earlyPrepareDes) {
        this.earlyPrepareDes = earlyPrepareDes;
    }

    public String getProviderDes() {
        return providerDes;
    }

    public void setProviderDes(String providerDes) {
        this.providerDes = providerDes;
    }

    public String getPayerDes() {
        return payerDes;
    }

    public void setPayerDes(String payerDes) {
        this.payerDes = payerDes;
    }

    public String getWantTimeStr() {
        return wantTimeStr;
    }

    public void setWantTimeStr(String wantTimeStr) {
        this.wantTimeStr = wantTimeStr;
    }
}
